import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

// 获取当前文件的目录路径（ES模块中的 __dirname 替代方案）
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 文件路径
const ADJUST_DEFAULT_PATH = path.join(__dirname, 'default.json');
const GET_DEFAULT_PATH = path.join(__dirname, '../get/default.json');

async function updateTranslationsFromAdjusted() {
    try {
        console.log('开始从调整文件更新翻译数据...\n');
        
        // 检查调整文件是否存在
        if (!fs.existsSync(ADJUST_DEFAULT_PATH)) {
            console.error(`❌ 调整文件不存在: ${ADJUST_DEFAULT_PATH}`);
            console.log('请先将翻译好的文件放入 node/adjust/ 目录并命名为 default.json');
            process.exit(1);
        }
        
        // 读取文件
        console.log('正在读取文件...');
        const adjustData = JSON.parse(fs.readFileSync(ADJUST_DEFAULT_PATH, 'utf8'));
        const getData = JSON.parse(fs.readFileSync(GET_DEFAULT_PATH, 'utf8'));
        
        console.log(`✓ 成功读取调整文件，共 ${Object.keys(adjustData).length} 条记录`);
        console.log(`✓ 成功读取目标文件，共 ${Object.keys(getData).length} 条记录\n`);
        
        let updatedCount = 0;
        let notFoundCount = 0;
        let noIdCount = 0;
        
        // 遍历调整文件中的每个条目
        for (const [chineseKey, item] of Object.entries(adjustData)) {
            const id = item.$id;
            
            if (!id) {
                console.log(`⚠️  跳过：条目 "${chineseKey}" 没有 $id 字段`);
                noIdCount++;
                continue;
            }
            
            // 查找目标文件中对应的条目
            let targetKey = null;
            for (const [key, targetItem] of Object.entries(getData)) {
                if (targetItem.$id === id) {
                    targetKey = key;
                    break;
                }
            }
            
            if (targetKey) {
                // 保存原来的翻译用于比较
                const oldTranslation = getData[targetKey]['en-US'];
                const newTranslation = item['en-US'];
                
                // 更新翻译
                getData[targetKey]['en-US'] = newTranslation;
                updatedCount++;
                
                console.log(`✅ 更新 ID: ${id}`);
                console.log(`   中文: ${chineseKey}`);
                console.log(`   原翻译: ${oldTranslation}`);
                console.log(`   新翻译: ${newTranslation}`);
                console.log('');
            } else {
                console.log(`❌ 未找到：ID ${id} 在目标文件中不存在`);
                console.log(`   中文: ${chineseKey}`);
                console.log(`   翻译: ${item['en-US']}`);
                console.log('');
                notFoundCount++;
            }
        }
        
        // 写入更新后的目标文件
        if (updatedCount > 0) {
            console.log('正在保存更新后的文件...');
            fs.writeFileSync(GET_DEFAULT_PATH, JSON.stringify(getData, null, 4), 'utf8');
            console.log('✓ 文件保存成功\n');
        }
        
        // 输出统计信息
        console.log('='.repeat(50));
        console.log('更新完成！统计信息：');
        console.log(`✅ 成功更新: ${updatedCount} 条`);
        console.log(`❌ 目标文件中未找到: ${notFoundCount} 条`);
        console.log(`⚠️  缺少ID字段: ${noIdCount} 条`);
        console.log(`📊 总处理: ${Object.keys(adjustData).length} 条`);
        console.log('='.repeat(50));
        
        // 如果有更新失败的条目，给出建议
        if (notFoundCount > 0) {
            console.log('\n💡 提示：有些条目在目标文件中未找到，可能的原因：');
            console.log('   - ID不匹配');
            console.log('   - 目标文件版本不同');
            console.log('   - 调整文件中包含了新增的条目');
        }
        
    } catch (error) {
        console.error('❌ 更新过程中发生错误:', error.message);
        if (error.code === 'ENOENT') {
            console.error('文件不存在，请检查文件路径是否正确');
        } else if (error instanceof SyntaxError) {
            console.error('JSON文件格式错误，请检查文件内容');
        }
        console.error(error.stack);
        process.exit(1);
    }
}

// 执行更新
updateTranslationsFromAdjusted(); 